#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "UiHelper.h"


MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){   
    ui->setupUi(this);

    setWindowTitle("OpenMBFR " + version);

    createTab();

    installEventFilter(this);

    if(!cacheDir .exists())  cacheDir.mkdir(cacheDir .path());
    if(!cookieDir.exists()) cookieDir.mkdir(cookieDir.path());

    QStringList cmdline_args = QCoreApplication::arguments();
    if(cmdline_args.length() > 1) StartServer(cmdline_args[1]);

    connect(ui->tabWidget, &QTabWidget::currentChanged, this, &MainWindow::tabChanged);
}

MainWindow::~MainWindow()
{//диструктор   
    delete ui;
}

void MainWindow::readSocket()
{//чтение команд от miniPoster
    QLocalSocket * socket = (QLocalSocket*)sender();

    if(tabs.count() == 0)
    { error(NO_TABS, socket); return; }

    QByteArray data_to_server = "1";

    QStringList TaskList = ((QString)socket->readAll()).split("||");

    TaskList.removeAll("");//Удаляем пустые строки после функции split

    int tabId = -1;
    Commands command = undefined;
    if(TaskList.length() >= 1){
        if(TaskList.length() >= 2){//tabId||command
            bool findDigits = false;
            for(int i = 0; i < TaskList.at(0).length(); i++){
                if(!TaskList.at(i)[0].isDigit()){
                    if(findDigits){//1gfg5||command
                        error(BAD_ID, socket); return;
                    }
                    break;//command||param
                }
                else findDigits = true;
            }

            if(findDigits){
                //Исключаем номер вкладки из списка, чтобы не переписывать половину кода
                tabId = TaskList.takeAt(0).toInt();
            }
        }

        command = getCommand(&TaskList.at(0).toUpper().remove('_'));
    }
    else { error(NO_COMMAND, socket); return; }
    Tab *tab = getTabById(tabId);

    if(tab == nullptr)//такой вкладки не существует
    { error(TAB_NOT_EXISTS, socket); return; }

    if(command == undefined){ error(BAD_COMMAND_NAME, socket); return; }

    if(command == IS_LOAD)//проверка загрузки страницы
    { data_to_server = tab->isLoaded ? "YES" : "NO"; }

    else if(TaskList.length() == 1)//Функции без параметров
    {
        if(command == GET_URL)//получить текущий url
            data_to_server = tab->url().url().toLocal8Bit();

        else if(command == GET_HTML)//получить HTML страницу
            tab->get_html(data_to_server);

        else if(command == CLOSE_WINDOW){//закрыть браузер
            SendToServer(socket, &data_to_server);
            QApplication::quit();
        }
        else if(command == WINDOW_MINIMAZE)//свернуть браузер
            save_position_and_pseudo_minimaze();

        else if(command == WINDOW_RESTORE)//обычное состояние браузера
            restore_position_and_show_normal();

        else if(command == WINDOW_MAXIMIZE){//развернуть браузер на весь экран
            normal_pos = pos();
            showMaximized();
        }
        else if(command == RECAPTCHA_RESPONSE){//получить ключ reCAPCHA(2|3), HCAP
            if(!tab->getCaptchaResponse(data_to_server))
            { error(BAD_CAPTCHA_TYPE, socket); return; }
        }
        else if(command == DEL_TOR)//убрать подключение через TOR
            QNetworkProxy::setApplicationProxy(QNetworkProxy::NoProxy);

        else if(command == PROXY_ON)//включить прокси
            data_to_server = QString::number(Proxy::on_off(PROXYSTATE::ON)).toLocal8Bit();

        else if(command == PROXY_OFF)//отключить прокси
            data_to_server = QString::number(Proxy::on_off(PROXYSTATE::OFF)).toLocal8Bit();

        else if(command == IS_JS)//проверить включен ли JavaScript в браузере
            data_to_server = QString::number(tab->settings()->testAttribute(QWebEngineSettings::JavascriptEnabled)).toLocal8Bit();

        else if(command == ENABLE_JS)//включить JavaScript на вкадке
            tab->settings()->setAttribute(QWebEngineSettings::JavascriptEnabled, true);

        else if(command == DISABLE_JS)//выключить JavaScript на вкладке
            tab->settings()->setAttribute(QWebEngineSettings::JavascriptEnabled, false);

        else if(command == ENABLE_ACCELERATION)//включить 2d ускорение
            tab->settings()->setAttribute(QWebEngineSettings::Accelerated2dCanvasEnabled, true);

        else if(command == DISABLE_ACCELERATION)//выключить 2d ускорение
            tab->settings()->setAttribute(QWebEngineSettings::Accelerated2dCanvasEnabled, false);

        else if(command == GET_COOKIES)//Получить куки из браузера
            tab->get_cookies(data_to_server);

        else if(command == DELETE_ALL_COOKIES)//Удалить все куки
            tab->deleteCookies();

        else if(command == FORWARD)//Загрузить следующую страницу
            tab->forward();

        else if(command == BACK)//Загрузить предыдущую страницу
            tab->back();

        else if(command == RELOAD)//Перезагрузить страницу
            tab->reload();

        else if(command == GET_IDS){//Получить список id всех вкладок
            data_to_server = "";
            for(auto &tab : tabs){
                data_to_server += QByteArray::number(tab->id) + "|";
            }
            if(data_to_server.length() > 0) data_to_server = data_to_server.remove(data_to_server.length() - 1, 1);
        }
        else if(command == GET_POSITION)//получить положение окна
            data_to_server = (QString::number(this->pos().x()) + ":" + QString::number(this->pos().y())).toLocal8Bit();

        else if(command == GET_WINDOW_SIZE)//получить размеры окна
            data_to_server = (QString::number(this->size().width()) + ":" + QString::number(this->size().height())).toLocal8Bit();

        else if(command == SCROLL_Y_POSITION)//Получить текущее значение полосы прокрутки по вертикали
            data_to_server = tab->scroll_y_position();

        else if(command == SCROLL_Y_MAX)//Получить максимальное значение полосы прокрутки по вертикали
            data_to_server = tab->scroll_y_max();

        else if(command == SCROLL_X_POSITION)//Получить текущее значение полосы прокрутки по горизонтали3
            data_to_server = tab->scroll_x_position();

        else if(command == SCROLL_X_MAX)//Получить максимальное значение полосы прокрутки по горизонтали
            data_to_server = tab->scroll_x_max();

        else if(command == GET_USERAGENT)//Получить значение UserAgent
            data_to_server = tab->page()->profile()->httpUserAgent().toLocal8Bit();

        else if(command == GET_TAB_ID)//Получить id текущей вкладки
            data_to_server = QByteArray::number(tab->id);

        else if(command == GET_TAB_COUNT)//Получить число вкладок
            data_to_server = QByteArray::number(tabs.count());

        else if(command == JS_ERROR)//Получить ошибки в JS
            data_to_server = tab->JS_Errors().toLocal8Bit();

        else if(command == CLEAR_JS_ERRORS)//Очистить список ошибок JS
            tab->clearJS_errors();

        else if(command == ADD_TAB)//Открыть новую вкладку
            data_to_server = QByteArray::number(createTab());

        else if(command == ADD_TAB_FOCUS){//Открыть новую вкладку и сделать её активной
            int id = createTab();
            data_to_server = QByteArray::number(id);
            tabFocus(id);
        }
        else if(command == CLOSE_TAB)//Закрыть вкладку
            data_to_server = QByteArray::number(deleteTab(tab));

        else if(command == TAB_FOCUS)//переключиться на вкладку
            data_to_server = QByteArray::number(tabFocus(tabId));

        else if(command == HIDE_BAR){//Скрыть нижнюю панель
            ui->progressBar->hide();
            ui->pushButton->hide();
            ui->btn_saveCookie->hide();
            ui->btn_removeCookie->hide();
        }
        else if(command == SHOW_BAR){//Показать нижнюю панель
            ui->progressBar->show();
            ui->pushButton->show();
            ui->btn_saveCookie->show();
            ui->btn_removeCookie->show();
        }
        else if(command == IS_BAR){//Проверить видна ли нижняя панель
            data_to_server = QByteArray::number(ui->progressBar->isHidden());
        }
        else { error(BAD_COMMAND_NAME, socket); return; }
    }
    else if(TaskList.length() == 2){//Дальше идут функции с параметрами
        if(command == OPEN_URL){//обычная загрузка сайта
            if(ui->tabWidget->currentWidget() == tab)
                ui->url_line->setText(TaskList.at(1));

            tab->load(QUrl(TaskList.at(1)));
        }
        else if(command == ADD_TAB)//Открыть новую вкладку с заданным именем
            data_to_server = QByteArray::number(createTab(TaskList.at(1)));

        else if(command == ADD_TAB_FOCUS){//Открыть новую вкладку с заданным именем и сделать её активной
            int id = createTab(TaskList.at(1));
            data_to_server = QByteArray::number(id);
            tabFocus(id);
        }
        else if(command == CLOSE_TAB){//Закрыть вкладку по id
            tab = getTabById(TaskList.at(1).toInt());
            data_to_server = QByteArray::number(deleteTab(tab));
        }
        else if(command == CLOSE_TAB_BY_NAME){//Закрыть вкладку по её имени
            for(int i = 0; i < ui->tabWidget->count(); ++i){
                if(TaskList.at(1) == ui->tabWidget->tabText(i))
                    tab = static_cast<Tab*>(ui->tabWidget->widget(i));
            }

            data_to_server = QByteArray::number(deleteTab(tab));
        }
        else if(command == IS_TAB_EXISTS)//Проверить открыта ли вкладка с указанным id
            data_to_server = QByteArray::number(isTabExist(TaskList.at(1).toInt()));

        else if(command == IS_TAB_NAME_EXISTS)//Проверить открыта ли вкладка с указанным именем
            data_to_server = QByteArray::number(isTabNameExist(TaskList.at(1)));

        else if(command == TAB_FOCUS)//переключиться на вкладку с указанным id
            data_to_server = QByteArray::number(tabFocus(tab->id));

        else if(command == TAB_FOCUS_BY_NAME){//Переключиться на вкладку с указанным именем
            data_to_server = "0";
            for(int i = 0; i < ui->tabWidget->count(); ++i){
                if(TaskList.at(1) == ui->tabWidget->tabText(i)){
                    ui->tabWidget->setCurrentIndex(i);
                    data_to_server = "1";
                    break;
                }
            }
        }
        else if(command == EVAL_JS)//выполнить JavaScript на странице
            data_to_server = tab->runJavaScript(TaskList.at(1));

        else if(command == SET_PROXY){//установить подключение через прокси
            if(!Proxy::set(&TaskList))
            { error(BAD_PROXY_TYPE_OR_PARAMS, socket); return; }
        }
        else if(command == SET_USERAGENT)//установить UserAgent
            tab->page()->profile()->setHttpUserAgent(TaskList[1]);

        else if(command == SET_ACCEPT_HEADER)//Установить заголовок Accept
            tab->page()->profile()->setHttpAcceptLanguage(TaskList.at(1));

        else if(command == JS_ERROR_LOGGING)//Включить/выключить запись ошибок в JS
            tab->set_JS_capture(TaskList.at(1) == "1");

        else if(command == JS_LOG_LEVEL)//Установить уровень логирования
            tab->set_JS_capture_level(TaskList.at(1).toInt());

        else if(command == JS_ON_ERROR_ALERT)//Отображать ошибку в JS в отдельном окне
            tab->set_JS_on_error_alert(TaskList.at(1) == "1");

        else if(command == SET_WINDOW_SIZE){//установить собственные размеры окна
            QList<QString> list = TaskList[1].split(":");
            if(list.size() == 2)
            {
                int currentWidth = this->size().width();
                int currentHeight = this->size().height();
                int newWidth = list[0].toInt();
                int newHeight = list[1].toInt();
                if(newWidth < 0){
                    if(currentWidth - newWidth < 0)
                        newWidth = 120;
                    else newWidth = currentWidth - newWidth;
                }
                if(newHeight < 0){
                    if(currentHeight - newHeight < 0)
                        newHeight = 200;
                    else newHeight = currentHeight - newHeight;
                }
                resize(newWidth, newHeight);
            }
            else { error(BAD_COMMAND_PARAM_LIST, socket); return; }
        }
        else if(command == SET_POSITION){//установить положение окна
            QList<QString> list = TaskList[1].split(":");
            if(list.size() == 2) {
                int currentX = this->pos().x();
                int currentY = this->pos().y();
                int newX = list[0].toInt();
                int newY = list[1].toInt();
                if(newX < 0){
                    if(currentX - newX < 0)//Вышли за границы экрана
                        newX = 0;
                    else newX = currentX - newX;//Двигаем окно левее
                }
                if(newY < 0){
                    if(currentY - newY < 0)//Вышли за границы экрана
                        newY = 0;
                    else newY = currentY - newY;//Двигаем окно вверх
                }
                move(newX, newY);
            }
            else { error(BAD_COMMAND_PARAM_LIST, socket); return; }
        }
        else if(command == SET_HTML)//установить HTML страницу
            tab->setHtml(TaskList.at(1));

        else if(command == TOR)//установить подключение через TOR
            QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, "127.0.0.1", TaskList[1].toUInt()));

        else if(command == ELEMENT_CLICK_BY_ID)//Нажать на элемент страницы с указанным id
            tab->element_click_by_id(TaskList.at(1));

        else if(command == ELEMENT_CLICK_BY_CLASS)//Нажать на элемент страницы с указанным классом
            tab->element_clock_by_class(TaskList.at(1));

        else if(command == SET_CACHE_DIR)//Изменить директорию для кэша
            setCachePath(tab, TaskList.at(1));

        else if(command == SET_COOKIE_DIR)//Изменить директорию для куков
            setCookiePath(tab, TaskList.at(1));

        else if(command == SET_OWN_CACHE_DIR)//Изменить директорию для кэша вне папки miniPoster
            tab->page()->profile()->setCachePath(TaskList.at(1));

        else if(command == SET_OWN_COOKIE_DIR)//Изменить директорию для куков вне папки miniPoster
            tab->page()->profile()->setPersistentStoragePath(TaskList.at(1));

        else if(command == SET_COOKIES)//Установить куки полученные из файла
            data_to_server = QByteArray::number(tab->set_cookies(TaskList));

        else if(command == SET_COOKIES_FROM_STRING)//Установить куки полученные из строки
            data_to_server = QByteArray::number(tab->set_cookies(TaskList, true));

        else if(command == SAVE_COOKIES)//получить куки из браузера и сохранить по стандартному пути
            tab->saveCookies("", TaskList.at(1), false, true);

        else if(command == SAVE_COOKIES_TO_PATH)//получить куки из браузера и сохранить в определенный файл
            tab->saveCookies("", TaskList.at(1), false, false);

        else if(command == GET_COOKIE_VALUE_BY_NAME)//Получить значение куки по имени
            tab->get_cookie_value_by_name(data_to_server, TaskList);

        else if(command == GET_COOKIE_BY_DOMAIN)//Получить куки для домена
            tab->get_cookie_by_domain(data_to_server, TaskList);

        else if(command == IMAGES)//Включение/Выключение автозагрузки изображений
            tab->settings()->setAttribute(QWebEngineSettings::AutoLoadImages, TaskList[1] != "0");

        else if(command == SET_WINDOW_TITLE)//Изменить заголовок окна
            setWindowTitle(TaskList.at(1));

        else if(command == SCROLL_Y)//Прокрутить страницу по вертикали на заданное расстояние
            data_to_server = tab->scroll_y(TaskList.at(1));

        else if(command == SCROLL_TO_Y)//Прокрутить страницу по вертикали до определенной высоты
            data_to_server = tab->scroll_to_y(TaskList.at(1));

        else if(command == SCROLL_X)//Прокрутить страницу по горизонтали на заданное расстояние
            data_to_server = tab->scroll_x(TaskList.at(1));

        else if(command == SCROLL_TO_X)//Прокрутить страницу по горизонтали до определенной длины
            data_to_server = tab->scroll_to_x(TaskList.at(1));

        else if(command == SET_URL){//Установить адрес сайта без перезагрузки страницы
            ui->url_line->setText(TaskList.at(1));
        }
        else {
            QPoint point = getPoint(&TaskList[1]);
            if(!performeMouseEmulation(tab, command, &point))
            { error(BAD_MOUSE_EMULATION, socket); return; }
        }
    }
    else if(TaskList.length() == 3){
        if(command == V2 || command == OPEN_URL){//загрузить страничку для решения reCAPTCHA2
            tab->load_v2reCAPTHCA(&TaskList[1], &TaskList[2]);

            if(ui->tabWidget->currentWidget() == tab){// показать ссылку откуда загружаем капчу и siteKey
                ui->url_line->setText(TaskList.at(1) + TaskList.at(2));
            }
        }
        else if(command == V3){//загрузить страничку для решения reCAPTCHA3, с action "homepage"
            tab->load_v3reCAPTHCA(TaskList);

            if(ui->tabWidget->currentWidget() == tab){// показать ссылку откуда загружаем капчу и siteKey
                ui->url_line->setText(TaskList.at(1) + TaskList.at(2));
            }
        }
        else if(command == HCAP){//загрузить страничку для решения hCaptcha
            tab->load_hcaptcha(TaskList);

            if(ui->tabWidget->currentWidget() == tab){// показать ссылку откуда загружаем капчу и siteKey
                ui->url_line->setText(TaskList.at(1) + TaskList.at(2));
            }
        }

        else if(command == SET_HTML)//установить HTML страницу
            tab->setHtml(TaskList.at(1), QUrl(TaskList.at(2)));

        else if(command == SAVE_COOKIES)//получить куки из браузера и сохранить по стандартному пути
            tab->saveCookies(TaskList.at(1), TaskList.at(2), false, true);

        else if(command == SAVE_COOKIES_TO_PATH)//получить куки из браузера и сохранить в определенный файл
            tab->saveCookies(TaskList.at(1), TaskList.at(2), false, false);

        else if(command == GET_DOMAIN_COOKIE_VALUE_BY_NAME)//Получить значение куки по имени на указанном домене
            tab->get_domain_cookie_value_by_name(data_to_server, TaskList);

        else if(command == ELEMENT_SET_VALUE_BY_ID)//Установить значение value у элемента страницы с указанным id
            tab->element_set_value_by_id(TaskList.at(1), TaskList.at(2));

        else if(command == ELEMENT_SET_VALUE_BY_CLASS)//Установить значение value у элемента страницы с указанным классом
            tab->element_set_value_by_class(TaskList.at(1), TaskList.at(2));

        else if(command == ELEMENT_SET_INNER_HTML_BY_ID)//Установить значение innerHTML у элемента страницы с указанным id
            tab->element_set_inner_html_by_id(TaskList.at(1), TaskList.at(2));

        else if(command == ELEMENT_SET_INNER_HTML_BY_CLASS)//Установить значение innerHTML у элемента страницы с указанным классом
            tab->element_set_inner_html_by_class(TaskList.at(1), TaskList.at(2));

        else if(command == MOUSE_EMULATION){//эмуляция мыши
            Commands secondCommand = getCommand(&(TaskList.at(1).toUpper().replace('_', "")));

            QPoint point = getPoint(&TaskList[2]);
            if(!performeMouseEmulation(tab, secondCommand, &point))
            { error(BAD_MOUSE_EMULATION, socket); return; }
        }
        else { error(BAD_COMMAND_NAME, socket); return; }
    }
    else if(TaskList.length() == 4){
        if(command == SAVE_COOKIES)//получить куки из браузера и сохранить по стандартному пути
            tab->saveCookies(TaskList[1], TaskList[2], TaskList[3] == "1", true);

        else if(command == SAVE_COOKIES_TO_PATH)//получить куки из браузера и сохранить в определенный файл
            tab->saveCookies(TaskList[1], TaskList[2], TaskList[3] == "1", false);

        else if(command == V3 || command == OPEN_URL){//загрузить страничку для решения reCAPTCHA3, с произвольным action
            tab->load_v3reCAPTHCA(TaskList);

            if(ui->tabWidget->currentWidget() == tab){// показать ссылку откуда загружаем капчу и siteKey
                ui->url_line->setText(TaskList.at(1) + TaskList.at(2));
            }
        }

        else if(command == SCREEN_SHOT)//сделать скриншот области
            tab->screen_shot(data_to_server, TaskList);

        else if(command == PIXEL_EXISTS)//проверить существует ли пиксель в заданной области
            tab->pixel_exists(data_to_server, TaskList);
        /*
                else if(command == CONTAINS_IMAGE){//проверить существует ли пиксель в заданной области
                    QList<QString> listData = TaskList[1].split(":");
                    listData.append(TaskList[2].split(":"));

                    if(listData.size() < 4) return;

                    tab->settings()->setAttribute(QWebEngineSettings::ScreenCaptureEnabled, true);
                    tab->page()->settings()->setAttribute(QWebEngineSettings::ScreenCaptureEnabled, true);
                    tab->profile()->settings()->setAttribute(QWebEngineSettings::ScreenCaptureEnabled, true);

                    int x = listData[0].toInt(), y = listData[1].toInt();
                    QImage img = tab->grab(QRect(QPoint(x,y), QSize(listData[2].toInt() - x, listData[3].toInt() - y))).toImage();

                    QImage image;

                    int bestPercent = 0;
                    int currentPercent = 0;

                    for(int y = 0; y < img.height(); ++y)
                        for(int x = 0; x < img.width(); ++x)
                            if(img.pixel(x, y) == pixel.rgb())
                            {  }

                }*/
        else { error(BAD_COMMAND_NAME, socket); return; }
    }
    else { error(TOO_MUCH_PARAMS, socket); return; }
    /*else if(command == CAPMONSTER)//
            QList<QString> list = TaskList[1].split(":");
                if(list.size() == 2){
                    QString cap_monster_key = list[0];
                    QString cap_monster_ip = list[1];
                    QNetworkAccessManager nam;

                  QString data_sitekey = "123";
                QString page_url = ui->url_line->text();

                  QNetworkRequest request(QUrl("http://" + cap_monster_ip + "/in.php"));

                  QByteArray data;
                data += "/key=" + cap_monster_key + "&method=userrecaptcha&googlekey=" + data_sitekey + "&pageurl=" + page_url;
              nam.post(request, data);
           }
        }*/

    SendToServer(socket, &data_to_server);
}

QPoint MainWindow::getPoint(QString *str){
    QList<QString> xyList = str->split(":");
    if(xyList.size() < 2) return QPoint(0, 0);

    return QPoint(xyList[0].toInt(), xyList[1].toInt());
}

void MainWindow::scrollToClickPoint(QPoint *point)
{
    //x
    //if(point)
}

bool MainWindow::performeMouseEmulation(Tab *tab, Commands command, QPoint *point){
    QWidget *eventsReciverWidget = nullptr;
    for(auto *o : tab->children()){
        QWidget *wgt = qobject_cast<QWidget*>(o);
        if (wgt) {
            eventsReciverWidget = wgt;
            break;
        }
    }

    if(!eventsReciverWidget) return false;

    if(command == L_BUTTON_CLICK){//клик левой кнопкой мыши
        //        scrollToClickPoint(point);
        QMouseEvent event(QEvent::MouseButtonPress, *point, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
        QCoreApplication::sendEvent(eventsReciverWidget, &event);

        QMouseEvent event1(QEvent::MouseButtonRelease, *point, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
        QCoreApplication::sendEvent(eventsReciverWidget, &event1);
    }
    else if(command == R_BUTTON_CLICK){//клик правой кнопкой мыши
        scrollToClickPoint(point);
        QMouseEvent event(QEvent::MouseButtonPress, *point, Qt::RightButton, Qt::RightButton, Qt::NoModifier);
        QCoreApplication::sendEvent(eventsReciverWidget, &event);

        QMouseEvent event1(QEvent::MouseButtonRelease, *point, Qt::RightButton, Qt::RightButton, Qt::NoModifier);
        QCoreApplication::sendEvent(eventsReciverWidget, &event1);
    }
    else if(command == L_BUTTON_PRESS){//нажали левой кнопкой мыши
        scrollToClickPoint(point);
        QMouseEvent event(QEvent::MouseButtonPress, *point, Qt::LeftButton, Qt::NoButton, Qt::NoModifier);

        QCoreApplication::sendEvent(eventsReciverWidget, &event);
    }
    else if(command == L_BUTTON_RELEASE){//отпускаем левую кнопку мыши
        scrollToClickPoint(point);
        QMouseEvent event(QEvent::MouseButtonRelease, *point, Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
        QCoreApplication::sendEvent(eventsReciverWidget, &event);
    }
    else if(command == MOUSE_MOVE){//эмуляция движения мышу в заданную точку
        //        scrollToClickPoint(point);
        QMouseEvent event(QEvent::MouseMove, *point, Qt::NoButton, Qt::NoButton, Qt::NoModifier);
        QCoreApplication::sendEvent(eventsReciverWidget, &event);
    }
    else return false;

    return true;
}
//int indext = 0;
//void MainWindow::on_pushButton_3_clicked()
//{
////    tabFocus(indext++);

//    return;


////    Tab *tab = getTabById();
////    QMouseEvent event(QEvent::MouseButtonPress, point, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
////    QCoreApplication::sendEvent(tab->page(), &event);

////    QMouseEvent event1(QEvent::MouseButtonRelease, point, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
////    QCoreApplication::sendEvent(tab->page(), &event1);
//}



